home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Frameworks / TransSkel 3.24 / Demos / Pascal Demos / Button / Movable.p < prev   
Text File  |  1996-01-24  |  2KB  |  107 lines

  1. unit Movable;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Events, QuickDraw, Windows, Dialogs, OSUtils, ToolUtils, ButtonGlobals, TransSkel;
  7.  
  8.  
  9.     procedure DoMovableModal;
  10.     procedure InitMovableModal;
  11.  
  12. implementation
  13.  
  14.     const
  15.  
  16.         okBtn = 1;
  17.         cancelBtn = 2;
  18.  
  19.     var
  20.  
  21.         dlog: DialogPtr;
  22.  
  23. {--------------------------------------------------------------------}
  24. { Dialog handling procedures }
  25. {--------------------------------------------------------------------}
  26.  
  27.  
  28.     function Filter (dlog: DialogPtr;
  29.                                     var evt: EventRecord;
  30.                                     var item: Integer): Boolean;
  31.         var
  32.             hilite: Integer;
  33.             ignore: Boolean;
  34.     begin
  35.         Filter := false;
  36.         case evt.what of
  37.             updateEvt: 
  38.                 SkelDrawButtonOutline(SkelGetDlogCtl(dlog, okBtn));
  39.             activateEvt: 
  40.                 begin
  41.                     if (BitAnd(evt.modifiers, activeFlag) <> 0) then
  42.                         hilite := normalHilite
  43.                     else
  44.                         hilite := dimHilite;
  45.                     ignore := SkelSetDlogCtlHilite(dlog, okBtn, hilite);
  46.                     SkelDrawButtonOutline(SkelGetDlogCtl(dlog, okBtn));
  47.                     ignore := SkelSetDlogCtlHilite(dlog, cancelBtn, hilite);
  48.                 end;
  49.             keyDown: 
  50.                 Filter := SkelDlogMapKeyToButton(dlog, evt, item, okBtn, cancelBtn);
  51.         end;
  52.     end;
  53.  
  54.  
  55.     procedure Select (dlog: DialogPtr;
  56.                                     item: Integer);
  57.     begin
  58.         case item of
  59.             okBtn, cancelBtn: 
  60.                 begin
  61.                     HideWindow(dlog);
  62. {AdjustMenus;}
  63.                 end;
  64.         end;
  65.     end;
  66.  
  67.  
  68.     procedure Clobber;
  69.         var
  70.             dlog: DialogPtr;
  71.     begin
  72.         GetPort(dlog);
  73.         HideWindow(dlog);
  74.         DisposeDialog(dlog);
  75.     end;
  76.  
  77.  
  78.     procedure DoMovableModal;
  79.         var
  80.             ignore: Boolean;
  81.     begin
  82.         if (dlog <> nil) then
  83.             begin
  84.                 SelectWindow(dlog);
  85.                 ShowWindow(dlog);
  86.                 exit(DoMovableModal);
  87.             end;
  88.         dlog := GetNewDialog(movableRes, nil, WindowPtr(-1));
  89.         if (dlog = nil) then
  90.             begin
  91.                 SysBeep(1);
  92.                 exit(DoMovableModal);
  93.             end;
  94.         SkelPositionWindow(dlog, skelPositionOnMainDevice, horizRatio, vertRatio);
  95.         ignore := SkelDialog(dlog, @Filter, @Select, nil, @Clobber);
  96.  
  97.         ShowWindow(dlog);
  98. {AdjustMenus;}
  99.     end;
  100.  
  101.  
  102.     procedure InitMovableModal;
  103.     begin
  104.         dlog := nil;
  105.     end;
  106.  
  107. end.